package org.outlook.test.ui;
//package ui;
//
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.custom.SashForm;
//import org.eclipse.swt.custom.StackLayout;
//import org.eclipse.swt.events.MouseAdapter;
//import org.eclipse.swt.events.MouseEvent;
//import org.eclipse.swt.layout.FillLayout;
//import org.eclipse.swt.layout.GridData;
//import org.eclipse.swt.layout.GridLayout;
//import org.eclipse.swt.layout.RowLayout;
//import org.eclipse.swt.widgets.Button;
//import org.eclipse.swt.widgets.Combo;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.swt.widgets.Label;
//import org.eclipse.swt.widgets.List;
//import org.eclipse.swt.widgets.Shell;
//import org.eclipse.swt.widgets.Text;
//public class QQ {
//    /**
//     * 为了自定义监听器类MyMouseLister中的代码能访问到以下对象,故将这些对象定义成 类的实例变量
//     */
//    private StackLayout stackLayout = new StackLayout();
//    private Composite yourDataComp;
//    private Composite otherComp;
//    private List selectList;
//    private Composite rightComp;
//    /**
//     * 由于自定义方法较多程序较长，这次的主程序框架选择了Eclipse“新建”向导的第二种： “public open() mothd”
//     */
//    public static void main(String[] args) {
//        try {
//            QQ window = new QQ();
//            window.open();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//    public void open() {
//        Display display = Display.getDefault();
//        Shell shell = new Shell();
//        shell.setSize(550, 350);
//        shell.setText("个人设置");
//        shell.setLayout(new GridLayout());
//        {
//            //分割窗口
//            SashForm sashForm = new SashForm(shell, SWT.BORDER);
//            sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
//            {
//                //分割窗左边的列表框
//                selectList = new List(sashForm, SWT.BORDER);
//                //作为演示只加了两项
//                selectList.setItems(new String[] { "个人资料", "联系方式" });
//                //加一个鼠标监听器
//                selectList.addMouseListener(new MyMouseLister());//
//            }
//            {
//                //右边的堆栈式面板
//                rightComp = new Composite(sashForm, SWT.NONE);
//                rightComp.setLayout(stackLayout);
//                //共两页。将生成此面板的代码提出成一个方法，保证代码结构的清晰。
//                yourDataComp = createYourDataComp(rightComp);//个人资料的面板
//                otherComp = createOtherComp(rightComp);//联系方式的面板
//                //在堆栈面板上先显示“个人资料”界面
//                stackLayout.topControl = yourDataComp;
//            }
//            //分割窗口的左右空间比例
//            sashForm.setWeights(new int[] { 1, 4 });
//        }
//        {
//            //界面的按钮的面板
//            Composite buttonComp = new Composite(shell, SWT.BORDER);
//            //使用GridData设置buttonComp在它父容器Shell中的布局方式
//            GridData gridData = new GridData();
//            gridData.horizontalAlignment = GridData.END;//让buttonComp向右靠
//            buttonComp.setLayoutData(gridData);
//            //设置buttonComp的布局为RowLayout，用来设定buttonComp内组件的布局方式
//            RowLayout rowLayout = new RowLayout();
//            rowLayout.spacing = 15;//按钮之间间隔15个像素
//            buttonComp.setLayout(rowLayout);
//            //在buttonComp下建立三个按钮
//            new Button(buttonComp, SWT.NONE).setText("    确定    ");
//            new Button(buttonComp, SWT.NONE).setText("    取消    ");
//            new Button(buttonComp, SWT.NONE).setText("    应用    ");
//        }
//        shell.layout();
//        shell.open();
//        while (!shell.isDisposed()) {
//            if (!display.readAndDispatch())
//                display.sleep();
//        }
//    }
//    /** 个人资料面板的生成 */
//    private Composite createYourDataComp(Composite rightComp) {
//        Composite composite = new Composite(rightComp, SWT.NONE);
//        composite.setLayout(new GridLayout(6, false));//个人资料面板分成6列
//        //---------用户号码的标签及其文本框
//        new Label(composite, SWT.NONE).setText("用户号码：");
//        //只读型的文本框
//        Text text = new Text(composite, SWT.READ_ONLY | SWT.BORDER);
//        //水平抢占式充满,并占用三列的空间. createGridData是自定义方法
//        text.setLayoutData(createGridData(GridData.FILL_HORIZONTAL, 3));
//        //---------图片部份.我们再用一个面板嵌套来管理
//        Composite photoComp = new Composite(composite, SWT.BORDER);
//        //水平垂直对齐式充满,横占两列,竖占4行.
//        photoComp.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL, 2, 4));
//        photoComp.setLayout(new GridLayout(2, false));//分2列
//        {
//            //图片. Image类的使用暂时还没有讲到,我们先用一个Composite来代替图片.
//            Composite tempComp = new Composite(photoComp, SWT.BORDER);
//            tempComp.setLayoutData(new GridData(50, 50));//设定大小:宽50,高50
//            //选择图片的箭头型按钮,并设置它向下靠
//            Button selPhotoButton = new Button(photoComp, SWT.ARROW | SWT.DOWN);
//            selPhotoButton.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_END));
//            //升级成为会员的按钮.横占photoComp的两列,并横向对齐充满
//            Button updateButton = new Button(photoComp, SWT.NONE);
//            updateButton.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 2));
//            updateButton.setText("升级成为会员");
//        }
//        new Label(composite, SWT.NONE).setText("用户呢称：");
//        Text nicknameText = new Text(composite, SWT.BORDER);
//        nicknameText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));
//        new Label(composite, SWT.NONE).setText("个性签名：");
//        Text attachNameText = new Text(composite, SWT.BORDER);
//        attachNameText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));
//        new Label(composite, SWT.NONE).setText("等    级：");
//        {
//            //Image类的使用暂时还没有讲到,我们先用一个Composite来代替图片
//            Composite tempComp = new Composite(composite, SWT.BORDER);
//            GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
//            gridData.horizontalSpan = 3;
//            //Composite默认的高度太高,故手工设定高度为20像素
//            gridData.heightHint = 20;
//            tempComp.setLayoutData(gridData);
//        }
//        new Label(composite, SWT.NONE).setText("性    别：");
//        Combo sexCombo = new Combo(composite, SWT.NONE);
//        new Label(composite, SWT.NONE).setText("姓名：");
//        Text nameText = new Text(composite, SWT.BORDER);
//        nameText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
//        new Label(composite, SWT.NONE).setText("年龄：");
//        Text oldText = new Text(composite, SWT.BORDER);
//        oldText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
//        new Label(composite, SWT.NONE).setText("毕业院校：");
//        Text schoolText = new Text(composite, SWT.BORDER);
//        schoolText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));
//        new Label(composite, SWT.NONE).setText("生肖：");
//        Combo animalCombo = new Combo(composite, SWT.NONE);
//        animalCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
//        new Label(composite, SWT.NONE).setText("职    业：");
//        Text jobText = new Text(composite, SWT.BORDER);
//        jobText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));
//        new Label(composite, SWT.NONE).setText("星座：");
//        Combo constellationCombo = new Combo(composite, SWT.NONE);
//        constellationCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
//        Label introLabel = new Label(composite, SWT.NONE);
//        //默认是居中，改为顶端对齐
//        introLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
//        introLabel.setText("个人说明：");
//        Text introText = new Text(composite, SWT.BORDER | SWT.WRAP);//WRAP自动换行
//        introText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL, 5));
//        //返回个人资料面板composite
//        return composite;
//    }
//    /** 生成一个简单的联系方式的面板 */
//    private Composite createOtherComp(Composite rightComp) {
//        Composite composite = new Composite(rightComp, SWT.NONE);
//        composite.setLayout(new FillLayout());
//        new Label(composite, SWT.NONE).setText("联系方式面板");
//        return composite;
//    }
//    /**
//     * 生成GridData对象的重复代码太多，写成一个方法可以减少程序的行数，用起来也方便
//     * 而且还要注意一个GridData只能被一个组件使用，不能两个组件使用一个GriData， 则 有一个组件将不会显示出来
//     */
//    private GridData createGridData(int style, int horizontalSpan) {
//        GridData gridData = new GridData(style);
//        gridData.horizontalSpan = horizontalSpan;
//        return gridData;
//    }
//    private GridData createGridData(int style, int horizontalSpan, int verticalSpan) {
//        GridData gridData = new GridData(style);
//        gridData.horizontalSpan = horizontalSpan;
//        gridData.verticalSpan = verticalSpan;
//        return gridData;
//    }
//    /** 鼠标监听器,采用事件的命名内部类的写法 */
//    private class MyMouseLister extends MouseAdapter {
//        public void mouseDown(MouseEvent e) {
//            //得到列表的当前选择项的序号(即单击的那项)
//            int selectionIndex = selectList.getSelectionIndex();
//            //如果单击第一项"个人资料",则让相对应的面板移至最上面
//            if (selectionIndex == 0)
//                stackLayout.topControl = yourDataComp;
//            else
//                stackLayout.topControl = otherComp;
//            rightComp.layout();//刷新堆栈式布局的顶容器
//        }
//    };
//}